home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / etc / bash_completion.d / strace < prev    next >
Encoding:
Text File  |  2010-11-16  |  2.8 KB  |  103 lines

  1. # bash completion for strace
  2.  
  3. have strace &&
  4. _strace()
  5. {
  6.     local cur prev offset i syscalls arch unistd
  7.  
  8.     # check if we're still completing strace
  9.     offset=0
  10.     for (( i=1; i <= COMP_CWORD; i++ )); do
  11.         case ${COMP_WORDS[$i]} in
  12.             -o|-e|-p)
  13.                 i=$((i+1))
  14.                 continue
  15.                 ;;
  16.             -*)
  17.                 continue
  18.                 ;;
  19.         esac
  20.         offset=$i
  21.         break
  22.     done
  23.  
  24.     if [ $offset -gt 0 ]; then
  25.         # FAIL: _command_offset is not defined anywhere. Guillame?
  26.         _command_offset $offset
  27.     else
  28.  
  29.         COMPREPLY=()
  30.         _get_comp_words_by_ref cur prev
  31.  
  32.         case $prev in
  33.         -e)
  34.             if [[ "$cur" == *=* ]]; then
  35.                 prev=${cur/=*/}
  36.                 cur=${cur/*=/}
  37.  
  38.                 # Import arch-specific syscalls -- not foolproof IMHO
  39.                 #+                                     --David Paleino
  40.                 arch=$(command uname -m)
  41.                 syscalls=$(awk '/^#define __NR/ {print $2}' \
  42.                     /usr/include/asm/unistd.h | sed -e \
  43.                     's/__NR_//')
  44.                 if [ -z "$syscalls" ]; then
  45.                     if [[ "$arch" == *86 ]]; then
  46.                         unistd=/usr/include/asm/unistd_32.h
  47.                     else
  48.                         unistd=/usr/include/asm/unistd_64.h
  49.                     fi
  50.                     syscalls=$(awk '/^#define __NR/ {print $2}' \
  51.                         $unistd | sed -e 's/__NR_//')
  52.                 fi
  53.  
  54.                 case $prev in
  55.                     trace)
  56.                         COMPREPLY=( $( compgen -W "$syscalls file process \
  57.                             network signal ipc desc all none" -- "$cur") )
  58.                         return 0
  59.                         ;;
  60.                 esac
  61.             else
  62.                 COMPREPLY=( $( compgen -S"=" -W 'trace abbrev \
  63.                     verbose raw signal read write' -- "$cur" ) )
  64.             fi
  65.             return 0
  66.             ;;
  67.         -o)
  68.             _filedir
  69.             return 0
  70.             ;;
  71.         -p)
  72.             _pids
  73.             return 0
  74.             ;;
  75.         -S)
  76.             COMPREPLY=( $( compgen -W 'time calls name nothing' -- "$cur" ) )
  77.             return 0
  78.             ;;
  79.         -u)
  80.             COMPREPLY=( $( compgen -u -- "$cur" ) )
  81.             return 0
  82.             ;;
  83.         esac
  84.  
  85.         if [[ "$cur" == -* ]]; then
  86.             COMPREPLY=( $( compgen -W '-c -d -f -ff -F --help -i -q \
  87.                 -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p \
  88.                 -s -S -u -E' -- "$cur" ) )
  89.         else
  90.             COMPREPLY=( $( compgen -c -- "$cur" ) )
  91.         fi
  92.     fi
  93. } &&
  94. complete -F _strace -o default strace
  95.  
  96. # Local variables:
  97. # mode: shell-script
  98. # sh-basic-offset: 4
  99. # sh-indent-comment: t
  100. # indent-tabs-mode: nil
  101. # End:
  102. # ex: ts=4 sw=4 et filetype=sh
  103.